/*
 *
 * (c) Copyright Ascensio System Limited 2010-2023
 * 
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 * http://www.apache.org/licenses/LICENSE-2.0
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 *
*/


using System;
using System.Collections.Generic;

using ASC.Core.Tenants;

namespace ASC.Core
{
    public interface ITenantService
    {
        void ValidateDomain(string domain);

        IEnumerable<Tenant> GetTenants(DateTime from, bool active = true);

        IEnumerable<Tenant> GetTenants(List<int> ids);

        IEnumerable<Tenant> GetTenants(string login, string passwordHash);

        Tenant GetTenant(int id);

        Tenant GetTenant(string domain);

        Tenant GetTenantForStandaloneWithoutAlias(string ip);

        Tenant SaveTenant(Tenant tenant);

        void RemoveTenant(int id, bool auto = false);

        byte[] GetTenantSettings(int tenant, string key);

        void SetTenantSettings(int tenant, string key, byte[] data);

        IEnumerable<TenantVersion> GetTenantVersions();

        bool IsDocspace { get; }
    }
}
